package com.example.apartment.service;

import com.example.apartment.domain.Admin;
import com.example.apartment.domain.Room;

import java.util.List;

/**
 * 宿舍业务层接口
 *
 * @author wuzexin
 * @date 2021/11/2 13:21
 */
public interface RoomService {

    /**
     * 创建宿舍
     *
     * @param admin        管理员用户信息
     * @param roomNum      宿舍号
     * @param personCount  可住人数
     * @param price        住宿费用
     * @param buildingName 宿舍楼名字
     * @return 宿舍信息
     */
    Room create(Admin admin, Integer roomNum, Integer personCount, Integer price, String buildingName);

    /**
     * 更改宿舍信息
     *
     * @param admin       管理员用户信息
     * @param id          宿舍id
     * @param roomNum     新宿舍号
     * @param personCount 新宿舍可住人数
     * @param price       新住宿费用
     * @param buildingId  宿舍楼id
     * @return 宿舍信息
     */
    Room update(Admin admin, Integer id, Integer roomNum, Integer personCount, Integer price, Integer buildingId);

    /**
     * 删除宿舍
     *
     * @param admin 管理员用户信息
     * @param id    宿舍id
     */
    void delete(Admin admin, Integer id);

    /**
     * 查询所有宿舍信息
     *
     * @param admin 管理员用户信息
     * @return 所有宿舍信息
     */
    List<Room> select(Admin admin);

    /**
     * 根据buildingName查询宿舍楼所有宿舍房间
     *
     * @param admin        管理员信息
     * @param buildingName 宿舍楼名字
     * @return 宿舍房间列表
     */
    List<Room> selectByBuildingName(Admin admin, String buildingName);

    /**
     * 根据id查询宿舍信息
     *
     * @param admin 管理员信息
     * @param id    房间主键id
     * @return 房间信息
     */
    Room selectById(Admin admin, Integer id);

    /**
     * 查询某栋宿舍楼，所有包含四个空床位的空宿舍数量
     *
     * @param admin
     * @param buildingName
     * @return
     */
    int selectEmptyRoomCount(Admin admin, String buildingName);
}
